const route_tools = loader("route_tools");

// 每一次访问的入口文件
module.exports=async (req,res,time=global.time())=>{
  //调用拦截器
  if(!loader("Interceptor")(req)){send(res,"");return}
  try{
    //启动异步变量池
    let yb = global.yb.start({req,res});
    //调用中间件,接受返回结果
    send(res,await loader("middleware")({req,res},route_tools.getRoute(req)));
    //关闭异步全局变量池
    yb.stop();
    //记录请求
    console.resend(req,time);
  }catch(e){
    if(e.toString() === "Error: dd"){send(res,"");return;}//捕捉dd导致的异常
    console.log(e);
    //控制器出现500错误
    req.statusCode=500;
    send(res,{code:500,message:e.toString()});
  }
}


function send(res,data){
  try{
    switch (typeof data){
      case 'string':{res.end(data);break;}
      default:{
        try{
          res.end(JSON.stringify(data));
        }catch(Error){res.end(data);}
      }
    }
  }catch(e){
    console.log(e);
  }
}